//Source file: D:\\Users\\afpa\\Documents\\workspace\\20-otarie\\src\\fr.afpa.biblio.metier\\Personne.java

package fr.afpa.biblio.metier;

import java.util.Date;

import fr.afpa.util.Utils;

/**
 * @author pev
 * @version 1.0
 * Cette classe décrit les particularité d'une personne
 * 
 */
public class Personne 
{
   private String nom;
   private String prenom;
   private Date dateNaissance;
   private String sexe;
   
   
   /**
     * @param _nom
	 *            : le nom de la personne.
	 * @param _prenom
	 *            : le prenom de la personne.
	 * @param _dateNaissance
	 *            : la date de naissance de la personne.
	 * @param _sexe
	 *            : les sexe de la personne.
	* @throws InstantiationException , voir : {@link java.lang.Class#newInstance() java.lang.Class.newInstance()}.
	* @throws IllegalAccessException , voir : {@link java.lang.Class#newInstance() java.lang.Class.newInstance()}.
    */
   public Personne(String _nom, String _prenom, Date _dateNaissance, String _sexe) throws InstantiationException, IllegalAccessException {
   	this.nom = Utils.nullSwap(_nom, String.class); 
   	this.prenom = Utils.nullSwap(_prenom, String.class); 
   	this.dateNaissance = Utils.nullSwap(_dateNaissance, String.class);
   	this.sexe = Utils.nullSwap(_sexe, String.class);
   }
    
   /**
    * @roseuid 5240E3CE03AC
    */
   public Personne() 
   {
	   
   }
   
/**
 * @return the nom
 */
public String getNom() {
	return nom;
}

/**
 * @param nom the nom to set
 */
public void setNom(String nom) {
	this.nom = nom;
}

/**
 * @return the prenom
 */
public String getPrenom() {
	return prenom;
}

/**
 * @param prenom the prenom to set
 */
public void setPrenom(String prenom) {
	this.prenom = prenom;
}

/**
 * @return the dateNaissance
 */
public Date getDateNaissance() {
	return dateNaissance;
}

/**
 * @param dateNaissance the dateNaissance to set
 * @throws IllegalAccessException 
 * @throws InstantiationException 
 */
public void setDateNaissance(Date _dateNaissance) throws InstantiationException, IllegalAccessException {
	this.dateNaissance =Utils.nullSwap(_dateNaissance, Date.class) ;
}

/**
 * @return the sexe
 */
public String getSexe() {
	return sexe;
}

/**
 * @param sexe the sexe to set
 * @throws IllegalAccessException 
 * @throws InstantiationException 
 */
public void setSexe(String _sexe) throws InstantiationException, IllegalAccessException {
	this.sexe = Utils.nullSwap(_sexe, String.class);
}

/* (non-Javadoc)
 * @see java.lang.Object#toString()
 */
@Override
public String toString() {
	return "Personne ["
			+ (nom != null ? "nom=" + nom + ", " : "")
			+ (prenom != null ? "prenom=" + prenom + ", " : "")
			+ (dateNaissance != null ? "dateNaissance=" + dateNaissance + ", "
					: "") + (sexe != null ? "sexe=" + sexe : "") + "]";
}

/* (non-Javadoc)
 * @see java.lang.Object#hashCode()
 */
@Override
public int hashCode() {
	final int prime = 31;
	int result = 1;
	result = prime * result
			+ ((dateNaissance == null) ? 0 : dateNaissance.hashCode());
	result = prime * result + ((nom == null) ? 0 : nom.hashCode());
	result = prime * result + ((prenom == null) ? 0 : prenom.hashCode());
	result = prime * result + ((sexe == null) ? 0 : sexe.hashCode());
	return result;
}

/* (non-Javadoc)
 * @see java.lang.Object#equals(java.lang.Object)
 */
@Override
public boolean equals(Object obj) {
	if (this == obj) {
		return true;
	}
	if (obj == null) {
		return false;
	}
	if (!(obj instanceof Personne)) {
		return false;
	}
	Personne other = (Personne) obj;
	if (dateNaissance == null) {
		if (other.dateNaissance != null) {
			return false;
		}
	} else if (!dateNaissance.equals(other.dateNaissance)) {
		return false;
	}
	if (nom == null) {
		if (other.nom != null) {
			return false;
		}
	} else if (!nom.equals(other.nom)) {
		return false;
	}
	if (prenom == null) {
		if (other.prenom != null) {
			return false;
		}
	} else if (!prenom.equals(other.prenom)) {
		return false;
	}
	if (sexe == null) {
		if (other.sexe != null) {
			return false;
		}
	} else if (!sexe.equals(other.sexe)) {
		return false;
	}
	return true;
}
}
